<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //库
        var obj = {
            name: "edward",
            print: function () {
                console.log(arguments) //es5函数中的不定参数
                console.log(this.name)
            }
        }


        //a  print
        var objA = {
            name: "eric"
        }

        //b  
        var objB = {
            name: "lucy"
        }


        //call 1.只能由函数调用  2.执行call的时候，同时会执行print函数  3.第一个参数是改变的this指向  4. 2-n：指的是传递的参数
        //把obj中的print函数中的this由call改变成了objA
        //obj.print.call(objA, 100, 200, 300, 400, 500)
        //obj.print.call(objB)

        //apply 1.只能由函数调用  2.执行apply的时候，同时会执行print函数  3.第一个参数是改变的this指向  4.指的是传递的参数组成的数组
        //obj.print.apply(objA, [100, 200, 300, 400, 600, 501])

        //bind  1.只能由函数调用  2.执行bind的时候，返回一个改变了this指向的print函数  3.第一个参数是改变的this指向  4.2-n：指的是传递的参数
        //obj.print.bind(objA, 100, 200, 300, 400, 500, 600)()



    </script>
</body>

</html>